/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Presenter;

import DAO.ParametroDAO;
import Model.Vehiculo;
import DAO.VehiculoDAO;
import Model.Parametro;
import java.awt.Rectangle;
import java.io.File;
import java.util.*;
import javax.swing.JProgressBar;

/**
 *
 * @author sebastian
 */
public class VehiculoPresenter {
    public static JProgressBar barrita ;
    
    public static List<Vehiculo> obtenerVehiculos() {
        return VehiculoDAO.vehiculosDisponibles();
    }

    public static void registrarVehiculo(String placa, Parametro tipoVehiculo, int anho) {
        Vehiculo vehiculo = new Vehiculo();
        vehiculo.setPlaca(placa);
        vehiculo.setAnho(anho);
        vehiculo.setTipoVehiculo(tipoVehiculo);
        vehiculo.setEstado(1);
        VehiculoDAO.registrarVehiculo(vehiculo);
    }

    public static List<Vehiculo> buscarVehiculo(String placa, Parametro tipo_vehiculo, int anho, int estado) {
        if (placa.isEmpty()) {
            placa = null;
        }
        List<Vehiculo> lstVehiculosTemp = VehiculoDAO.buscarVehiculo(placa, anho, estado);
        if (tipo_vehiculo != null) {
            List<Vehiculo> lstVehiculos = new ArrayList();
            for (Vehiculo v : lstVehiculosTemp) {
                if (v.getTipoVehiculo().equals(tipo_vehiculo)) {
                    lstVehiculos.add(v);
                }
            }
            return lstVehiculos;
        }
        return lstVehiculosTemp;
    }

    public static Vehiculo cargarVehiculo(int idVehiculo) {
        return VehiculoDAO.cargarVehiculo(idVehiculo);
    }

    public static int verificarPlaca(String placaVehiculo) {
        return VehiculoDAO.verificarPlaca(placaVehiculo);
    }

    public static int verificarPlacaModificar(int idVehiculo, String placaVehiculo) {
        return VehiculoDAO.verificarPlacaModificar(idVehiculo, placaVehiculo);
    }

    public static void modificarVehiculo(int idV, String placa, int tipo_vehiculo, int anho) {
        try {
            Vehiculo v = VehiculoDAO.cargarVehiculo(idV);
            v.setAnho(anho);
            v.setPlaca(placa);
            VehiculoDAO.modificarVehiculo(v);
        } catch (Exception e) {
            System.out.println("MENSAJE DE ERROR:" + e);
        }
    }

    public static void modificarVehiculo(Vehiculo v, String placa, Parametro tipo_vehiculo, int anho) {
        try {
            v.setAnho(anho);
            v.setTipoVehiculo(tipo_vehiculo);
            v.setPlaca(placa);
            VehiculoDAO.modificarVehiculo(v);
        } catch (Exception e) {
            System.out.println("MENSAJE DE ERROR:" + e);
        }
    }
    
     public static void modificarVehiculo(Vehiculo v, String placa, Parametro tipo_vehiculo, int anho, int estado) {
        try {
            v.setAnho(anho);
            v.setTipoVehiculo(tipo_vehiculo);
            v.setPlaca(placa);
            if (estado != 0) v.setEstado(estado);
            VehiculoDAO.modificarVehiculo(v);
        } catch (Exception e) {
            System.out.println("MENSAJE DE ERROR:" + e);
        }
    }
    public static void eliminarVehiculo(Vehiculo v) {
        v.setEstado(0);
        VehiculoDAO.modificarVehiculo(v);
    }

    public static void registrarVehiculo(String path) {
        try {
            Scanner sc = new Scanner(new File(path));
            int N = Integer.parseInt( sc.nextLine() ) ;
            double cantidad = 100.0 / (double)N ;
            for(int i = 0 ; i < N ; i++){
                String placa = sc.nextLine(); // placa
                Integer anho = Integer.parseInt(sc.nextLine()); // anho
                Parametro tipoVehiculo = ParametroDAO.cargarParametro(Integer.parseInt(sc.nextLine()));

                Vehiculo vehiculo = new Vehiculo();
                vehiculo.setPlaca(placa);
                vehiculo.setAnho(anho);
                vehiculo.setTipoVehiculo(tipoVehiculo);
                vehiculo.setEstado(1);
                VehiculoDAO.registrarVehiculo(vehiculo);
                
                double value = i * cantidad ;
                barrita.setValue( (int)value ) ;
                Rectangle progress = barrita.getBounds() ;
                progress.x = 0 ;
                progress.y = 0 ;
                barrita.paintImmediately( progress ) ;
            }
            barrita.setValue( 100 ) ;
            Rectangle progress = barrita.getBounds() ;
            progress.x = 0 ;
            progress.y = 0 ;
            barrita.paintImmediately( progress ) ;
        } catch (Exception e) {
            System.out.println("Error en carga masiva de vehiculos");
        }
    }
    
    public static List<Vehiculo> buscarVehiculosSimulacion(String lista){
        try{
            return VehiculoDAO.buscarVehiculosSimulacion(lista);
        }catch (Exception e){
            System.out.println("Error al buscar vehiculos de la simulacion");
            return null;
        }
    }
    
    
}
